home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #114 (1991-03)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #114 (1991-03)(Amiga User Group Deutschland e.V.).adf / BootBlock / PrintLib.asm < prev    next >
Assembly Source File  |  1989-07-03  |  3KB  |  124 lines

  1. * PrintBBLib von E.Hambuch
  2. * Version 1.0
  3. * Listing für A68k
  4.   CODE
  5.   include 'exec.i'  ;eigene Include-Files !
  6.   include 'dos.i'
  7.   include 'startup.i'
  8. _main:
  9.   lea dosname,a1           ;Dos-Library öffnen
  10.   CALLEXEC OldOpenLibrary
  11.   move.l d0,_DOSBase
  12.   beq ende
  13.   tst.l _WBenchMsg         ;von der Workbench
  14.   beq.s clistart           ;nein !
  15.   move.l #fenster,d1       ;sonst Fenster öffnen
  16.   move.l #MODE_NEWFILE,d2
  17.   CALLDOS Open
  18.   move.l d0,Output
  19.   beq closedos
  20.   bra.s start
  21. clistart:
  22.   CALLDOS Output         ;Output-Handle
  23.   move.l d0,Output
  24.   beq closedos
  25. start:
  26.   move.l #filename,d1     ;Lib öffnen
  27.   move.l #MODE_OLDFILE,d2
  28.   jsr _LVOOpen(a6)
  29.   move.l d0,FilePtr
  30.   bne.s weiter1
  31.   lea text1,a0          ;nicht gefunden
  32.   bsr print
  33.   bra closefen
  34. weiter1:
  35.   move.l d0,d1         ;Anzahl einlesen
  36.   move.l #BootAnz,d2
  37.   moveq #4,d3
  38.   jsr _LVORead(a6)
  39.   lea text3,a0
  40.   move.l BootAnz,d3
  41.   bsr dez              ;in Dezimal umwandeln
  42.   lea text2,a0
  43.   bsr print            ;und ausgeben
  44.   tst.l BootAnz        ;Anzahl=0 ? -> Ende
  45.   beq closefile
  46. loop:                  ;Hauptschleife
  47.   move.l FilePtr,d1
  48.   move.l #Buffer,d2
  49.   move.l #1012+20,d3   ;Bootblock (1012 Bytes) und Namen (20) einlesen
  50.   jsr _LVORead(a6)
  51.   tst.l d0             ;schon Dateiende oder Fehler ?
  52.   beq closefile
  53.   lea text5,a0
  54.   bsr print            ;Tabs ausgeben (Zentrieren)
  55.   lea Buffer,a0        ;Name ausgeben
  56.   bsr print
  57.   lea text4,a0
  58.   bsr print           ;und Linefeed
  59.   subq.l #1,BootAnz
  60.   bne.s loop
  61. closefile:             ;Datei schließen
  62.   move.l FilePtr,d1
  63.   CALLDOS Close
  64. closefen:
  65.   tst.l _WBenchMsg
  66.   beq.s closedos
  67.   move.l Output,d1    ;Falls von Workbench
  68.   move.l #Buffer,d2
  69.   moveq #2,d3
  70.   CALLDOS Read        ;warte auf RETURN
  71.   move.l Output,d1
  72.   jsr _LVOClose(a6)   ;Fenster schließen
  73. closedos:
  74.   move.l _DOSBase,a1
  75.   CALLEXEC CloseLibrary
  76. ende: rts
  77. print:            ;Text ausgeben (muß mit $00-Byte enden !)
  78.   move.l a0,a1
  79. s00: tst.b (A1)+
  80.   bne.s s00
  81.   suba.l a0,a1
  82.   move.l Output,d1
  83.   move.l a0,d2
  84.   move.l a1,d3
  85.   jmp _LVOWrite(a6)
  86. dez:             ;in 5 stellige Dezimalzahl umwandeln
  87.   lea deztab,a1
  88.   moveq #0,d1
  89. dez2: moveq #'0'-1,d2
  90.   move.l d1,d4
  91.   lsl.l #2,d4
  92.   move.l d3,d5
  93. dez3: addq.b #1,d2
  94.   sub.l 0(a1,d4.w),d3
  95.   bcc.s dez3
  96.   move.l d5,d3
  97.   move.b d2,0(a0,d1.w)
  98.   addq.b #1,d1
  99.   cmp.b #5,d1
  100.   bne dez2
  101.   rts
  102.   DATA
  103. deztab:
  104.   dc.l 10000
  105.   dc.l 1000
  106.   dc.l 100
  107.   dc.l 10
  108.   dc.l 1
  109. dosname: dc.b 'dos.library',0
  110. fenster: dc.b 'CON:0/0/640/256/PrintBBLib Version 1.0 von E.Hambuch',0
  111. filename: dc.b 'S:BBLib',0
  112. text1: dc.b '"BBLib" nicht gefunden !',10,0
  113. text2: dc.b 'Anzahl der Bootblöcke: '
  114. text3: dc.b 'xxxxx',10
  115. text4: dc.b 10,0
  116. text5: dc.b 9,9,9,0
  117.   BSS
  118. _DOSBase:   ds.l 1
  119. Output:     ds.l 1
  120. FilePtr:    ds.l 1
  121. BootAnz:    ds.l 1
  122. Buffer:     ds.b 20+1012
  123.   END
  124.